/**
 * 文件名    ： baseController.java
 * 版权       : XX科技有限公司。
 * 描述       : <描述>
 * 修改时间：2016年10月30日
 * 修改内容：<修改内容>
 */
package com.one.mycommons.base;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * <一句话功能简述> base
 * <功能详细描述>
 * @author    chen
 * @version   [版本号，2016年10月30日]
 * @see       [相关类/方法]
 * @since     [产品/模块版本]
 */

@Controller
public class BaseController {
	
	private static Logger log = Logger.getLogger(BaseController.class);
	
	protected static final String ERROR_MSG_KEY = "errorMsg";  
	
	/**
     * <一句话功能简述> 基于@ExceptionHandler异常处理----全局异常处理
     * <功能详细描述>
     * @param request
     * @param ex 异常
     * @return
     * @see [类、类#方法、类#成员]
     */
    @ExceptionHandler  
    public Object exp(HttpServletRequest request, HttpServletResponse response,Exception ex) {  
        System.out.println("URI"+request.getRequestURI());
        request.setAttribute("ex", ex);  
        System.err.println("BaseController --exp " + ex);
        try {
			response.sendError(502, "err");
		} catch (IOException e) {
			e.printStackTrace();
		}
        // 根据不同错误转向不同页面  
        return request.getRequestURI();
    }  
    
    //① 获取保存在Session中的用户对象  
    protected Object getSessionUser(HttpServletRequest request) {  
        return request.getSession().getAttribute(CommonConstant.USER_CONTEXT);  
    }  
     
     //②将用户对象保存到Session中  
    protected void setSessionUser(HttpServletRequest request,Object user) {  
        request.getSession().setAttribute(CommonConstant.USER_CONTEXT, user);  
    }  
      
    //③ 获取基于应用程序的url绝对路径  
    public final String getAppbaseUrl(HttpServletRequest request, String url) {  
        Assert.hasLength(url, "url不能为空");  
        Assert.isTrue(url.startsWith("/"), "必须以/打头");  
        return request.getContextPath() + url;  
    }  
    public static Logger getLog() {
		return log;
	}
}
